package cc.rengu.igas.bsps.common.dao;


import cc.rengu.igas.bsps.common.entity.ManagerInfo;
import cc.rengu.oltp.utility.bean.PageInfo;
import cc.rengu.oltp.utility.bean.PageResult;

import java.util.List;

/**
 * 拓展经理表操作接口类
 * Created by 王成 on 2020/3/6
 */
public interface BspsManagerInfoMapper {
    /**
     * 登记拓展经理信息
     *
     * @param managerInfo 拓展经理信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertBspsManagerInfo(ManagerInfo managerInfo) throws Exception;

    /**
     * 更新拓展经理信息
     *
     * @param managerInfo 拓展经理信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateBspsManagerInfoById(ManagerInfo managerInfo) throws Exception;

    /**
     * 根据非业务主键查询拓展经理信息
     *
     * @param instId 多法人标识
     * @param id     非业务主键
     * @return 拓展经理信息
     * @throws Exception 异常
     */
    ManagerInfo selectBspsManagerInfoById(String instId, String id) throws Exception;

    /**
     * 根据主键查询拓展经理信息
     *
     * @param instId     多法人标识
     * @param signInstId 签约机构
     * @param managerId  申请单号
     * @return 拓展经理信息
     * @throws Exception 异常
     */
    ManagerInfo selectBspsManagerInfoByPrimaryKey(String instId, String signInstId, String managerId) throws Exception;

    /**
     * 根据OpenId查询拓展经理信息
     *
     * @param instId 多法人标识
     * @param openId 用户openId
     * @return 拓展经理信息
     * @throws Exception 异常
     */
    ManagerInfo selectBspsManagerInfoByOpenId(String instId, String openId) throws Exception;

    /**
     * 根据签约机构查询拓展经理信息
     *
     * @param instId     多法人标识
     * @param signInstId 签约机构
     * @return 拓展经理信息
     * @throws Exception 异常
     */
    List<ManagerInfo> selectBspsManagerInfoBySignInstId(String instId, String signInstId) throws Exception;

    /**
     * 根据行政区域查询拓展经理信息
     *
     * @param instId   多法人标识
     * @param province 省
     * @param city     市
     * @param area     区
     * @return 拓展经理信息
     * @throws Exception 异常
     */
    List<ManagerInfo> selectBspsManagerInfoByAdminArea(String instId, String province, String city, String area) throws Exception;

    /**
     * 根据姓名和手机号查询拓展经理信息
     *
     * @param instId       多法人标识
     * @param managerName  拓展经理姓名
     * @param managerPhone 拓展经理手机号
     * @return 拓展经理信息
     * @throws Exception 异常
     */
    ManagerInfo selectBspsManagerInfoByNameAndPhone(String instId, String managerName, String managerPhone) throws Exception;

    /**
     * 根据拓展经理工号查询正常状态的拓展经理信息
     *
     * @param instId    多法人标识
     * @param managerId 拓展经理工号
     * @return 拓展经理信息
     * @throws Exception 异常
     */
    ManagerInfo selectBspsManagerInfoByManagerId(String instId, String managerId) throws Exception;

    /**
     * 根据拓展经理工号查询拓展经理信息，包括注销的
     *
     * @param instId    多法人标识
     * @param managerId 拓展经理工号
     * @return 拓展经理信息
     * @throws Exception 异常
     */
    ManagerInfo selectBspsManagerNameByManagerId(String instId, String managerId) throws Exception;

    /**
     * 根据拓展经理手机号查询拓展经理信息
     * @param instId 多法人标识
     * @param managerPhone 拓展经理手机号
     * @return 拓展经理信息
     * @throws Exception 异常
     */
    ManagerInfo selectBspsManagerInfoByManagerPhone(String instId,String managerPhone) throws Exception;

    /**
     * 根据代理机构号查询拓展经理
     *
     * @param instId  多法人标识
     * @param agentNo 代理商机构号
     * @return 商户基本信息
     * @throws Exception 异常
     */
    PageResult selectBspsManagerIdByAgentNoPage(String instId, String agentNo, PageInfo pageInfo) throws Exception;

}
